/**
 * 菜单接口定义
 * 作者：GodMainCode
 * 创建时间：2024-01-17
 * 修改时间：2024-01-17
 * 修改人：GodMainCode
 */

// 菜单类型枚举
export enum MenuType {
  DIRECTORY = 1,  // 目录
  MENU = 2,       // 菜单
  BUTTON = 3,     // 按钮
}

// 基础菜单接口
export interface IMenu {
  id: number;
  name: string;           // 菜单名称
  code: string;           // 菜单标识
  type: MenuType;         // 菜单类型
  parent_id?: number;     // 父级ID
  icon?: string;          // 图标
  path?: string;          // 路由路径
  component?: string;     // 组件路径
  redirect?: string;      // 重定向路径
  permission?: string;    // 权限标识
  sort: number;           // 排序
  status: number;         // 状态：0-禁用 1-启用
  is_visible: number;     // 是否可见：0-否 1-是
  is_cache: number;       // 是否缓存：0-否 1-是
  is_frame: number;       // 是否外链：0-否 1-是
  created_at: Date;       // 创建时间
  updated_at: Date;       // 更新时间
  is_deleted: number;     // 是否删除：0-否 1-是
}

// 菜单元数据接口
export interface IMenuMeta {
  title: string;          // 菜单标题
  icon?: string;          // 菜单图标
  permission?: string;    // 权限标识
  noCache?: boolean;      // 是否不缓存
  hidden?: boolean;       // 是否隐藏
  hideBreadcrumb?: boolean; // 是否隐藏面包屑
  hideChildrenInMenu?: boolean; // 是否隐藏子菜单
  target?: '_blank' | '_self'; // 打开方式
  currentActiveMenu?: string;  // 当前激活的菜单
  orderNo?: number;      // 排序号
}

// 菜单树节点接口
export interface IMenuTree extends IMenu {
  meta: IMenuMeta;
  children?: IMenuTree[];
}

// 菜单创建接口
export interface ICreateMenu {
  name: string;
  code: string;
  type: MenuType;
  parent_id?: number;
  icon?: string;
  path?: string;
  component?: string;
  redirect?: string;
  permission?: string;
  sort?: number;
  is_visible?: number;
  is_cache?: number;
  is_frame?: number;
}

// 菜单更新接口
export interface IUpdateMenu extends Partial<ICreateMenu> {} 